package com.taotao.wjspringboot;

import java.io.File;

import javax.servlet.ServletException;

import org.apache.catalina.LifecycleException;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;

public class AppTomcat {
    public static void main(String[] args) {
        //使用Java内置tomcat运行spring mvc框架 原理：tomcat加载到spring mvc注解启动方式，就会创建spring mvc容器
        try {
            start();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void start() throws ServletException, LifecycleException {

        // 1.创建Tomcat容器
        Tomcat tomcatServer = new Tomcat();
        // 2.端口号设置
        tomcatServer.setPort(9090);
        // 3.读取项目路径    这样可以加载到静态资源
        StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/", new File("src/main").getAbsolutePath());
        // 4.禁止重新载入
        ctx.setReloadable(false);
        // 5.class文件读取地址    启动后 在target生成编译后的class文件
        File additionWebInfClasses = new File("target/classes");
        // 6.创建WebRoot
        WebResourceRoot resources = new StandardRoot(ctx);
        // 6.tomcat内部读取Class执行
        resources.addPreResources(
                new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
        tomcatServer.start();
        // 异步等待请求执行
        tomcatServer.getServer().await();

    }
}
